#include <stdio.h>
#include <stdlib.h>
#include "patients.h"
void saisir_patient(struct patient *pa)
{
   int x,y,z,t,s,d,e,f;
  do
    {
        printf("\n entrer identifiant à l'ordre de 20000 du personnel");
        scanf("%d",&(pa->iden));
    }
    while ((pa->iden / 20000)!=1);
    printf("\t entrer nom :");
    scanf("%s",pa->nom);
    printf("\t entrer prenom :");
    scanf("%s",pa->prenom);
    printf("\t entrer l'age:");
    scanf("%d",&(pa->age));
    printf("\t entrer la nationnalite:");
    scanf("%s",pa->nationnalite);
    printf("\t entrer profession:");
    scanf("%s",pa->profession);
    printf("\t entrer le pays :");
    scanf("%s",pa->pays);
 do
    {

    printf("\t entrer le sexe :");
    scanf("%s",pa->sexe);
x=strcmp(pa->sexe,"fe");
y=strcmp(pa->sexe,"ho");}
while
((x != 0)&&(y!=0));
    printf("\t entrer numero de tel:");
    scanf("%d",&(pa->tel));
    printf("\t entrer photo :");
    scanf("%s",pa->photo);
 do
    {
    printf("\t entrer le type du sang:");
    scanf("%s",pa->tsang);
x=strcmp(pa->tsang,"A+");
y=strcmp(pa->tsang,"A-");
z=strcmp(pa->tsang,"B+");
t=strcmp(pa->tsang,"B-");
s=strcmp(pa->tsang,"AB+");
d=strcmp(pa->tsang,"AB-");
e=strcmp(pa->tsang,"o+");
f=strcmp(pa->tsang,"o-");}
while
((x != 0)&&(y!=0)&&(z!=0)&&(t!=0)&&(s!=0)&&(d!=0)&&(e!=0)&&(f!=0));


    printf("\tentrer l'adresse :");
    scanf("%s",pa->adresse);
}
int sauvegarder_patient(char fichier[],struct patient pa)
{
    FILE*f;
    f=fopen(fichier,"a");
    if(f==NULL)
    {
        printf("impo");
    }
    else
    {
        fprintf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",pa.iden,pa.nom,pa.prenom,pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,pa.tel,pa.photo,pa.tsang,pa.adresse);
        fclose(f);
    }
}


void rechercher_par_nom(char fichier[],char nom[],struct patient p[100],int *n)
{
    struct patient pa;
    FILE *f;
    int i=0;
    f= fopen("fichier.txt", "r");
    *n= 0;
    while(!feof(f))
    {
        fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse);
        if (strcmp(pa.nom,nom) == 0)
        {
            p[*n]=pa;
            (*n)++;
            i++;
        }
    }
    if (*n==0)
    {
        printf("\n patient inexistant");
    }
    fclose(f);
}
void rechercher_par_prenom(char fichier[],char prenom[],struct patient p[100],int *n)
{
    struct patient pa;
    FILE *f;
    int i=0;
    f= fopen("fichier.txt", "r");
    *n= 0;
    while(!feof(f))
    {
        fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse);
        if (strcmp(pa.prenom,prenom) == 0)
        {
            p[*n]=pa;
            (*n)++;
            i++;
        }
    }
    if (*n==0)
    {
        printf("\n patient inexistant");
    }
    fclose(f);
}
int rechercher_par_id(char fichier[],int iden)
{int j;
struct patient pa;
FILE *f;
f= fopen("fichier.txt", "r");
	j = 0;
while(fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse)!= EOF)
if((pa.iden)==iden)
{
printf("%d %s %s %d %s %s %s %s %d %s %s %s \n",pa.iden,pa.nom,pa.prenom,pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,pa.tel,pa.photo,pa.tsang,pa.adresse);
	  j++; }
	if (j==0)
	 { printf("\n patient introuvable"); }
fclose(f);
return 0;
	}
void rechercher_par_pays(char fichier[],char pays[],struct patient p[100],int *n)
{
    struct patient pa;
    FILE *f;
    int i=0;
    f= fopen("fichier.txt", "r");
    *n= 0;
    while(!feof(f))
    {
        fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse);
        if (strcmp(pa.pays,pays) == 0)
        {
            p[*n]=pa;
            (*n)++;
            i++;
        }
    }
    if (*n==0)
    {
        printf("\n patient inexistant");
    }
    fclose(f);
}
void rechercher_par_sexe(char fichier[],char sexe[],struct patient p[100],int *n)
{
    struct patient pa;
    FILE *f;
    int i=0;
    f= fopen("fichier.txt", "r");
    *n= 0;
    while(!feof(f))
    {
        fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse);
        if (strcmp(pa.sexe,sexe) == 0)
        {
            p[*n]=pa;
            (*n)++;
            i++;
        }
    }
    if (*n==0)
    {
        printf("\n patient inexistant");
    }
    fclose(f);
}
void rechercher_par_age(char fichier[],int age,struct patient p[100],int *n)
{
    struct patient pa;
    FILE *f;
    int i=0;
    f= fopen("fichier.txt", "r");
    *n= 0;
    while(!feof(f))
    {
        fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&pa.iden,pa.nom,pa.prenom,&pa.age,pa.nationnalite,pa.profession,pa.pays,pa.sexe,&pa.tel,pa.photo,pa.tsang,pa.adresse);
        if((pa.age)==age)
        {
            p[*n]=pa;
            (*n)++;
            i++;
        }
    }
    if (*n==0)
    {
        printf("\n patient inexistant");
    }
    fclose(f);
}
void afficher_Listpatient(char fichier[],struct patient p[100],int n)
{
FILE *f;
int i=0;
f=fopen ("fichier.txt","r" );
while(!feof(f))

     {   fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&(p[i].iden),p[i].nom,p[i].prenom,&(p[i].age),p[i].nationnalite,p[i].profession,p[i].pays,p[i].sexe,&(p[i].tel),p[i].photo,p[i].tsang,p[i].adresse);
i++;
n=i;}
for(i=0;i<n;i++)
printf("%d %s %s %d %s %s %s %s %d %s %s %s \n",p[i].iden,p[i].nom,p[i].prenom,p[i].age,p[i].nationnalite,p[i].profession,p[i].pays,p[i].sexe,p[i].tel,p[i].photo,p[i].tsang,p[i].adresse);
fclose(f);
}
void supprimer(char fichier[],char fichier1[],int x)
{
struct patient p[100];
FILE *f= fopen(fichier,"r");
FILE *f1= fopen(fichier1,"w");
int i,iden;
x=rechercher_par_id("fichier.txt", iden);
while(!feof(f))

     {   fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&(p[i].iden),p[i].nom,p[i].prenom,&(p[i].age),p[i].nationnalite,p[i].profession,p[i].pays,p[i].sexe,&(p[i].tel),p[i].photo,p[i].tsang,p[i].adresse);

if(x!=p[i].iden)
{
fprintf(f1,"%d %s %s %d %s %s %s %s %d %s %s %s \n",p[i].iden,p[i].nom,p[i].prenom,p[i].age,p[i].nationnalite,p[i].profession,p[i].pays,p[i].sexe,p[i].tel,p[i].photo,p[i].tsang,p[i].adresse);
}
i++;
}
fclose(f);
fclose(f1);
remove(fichier);
rename(fichier1,fichier);
}

/* la modification des donnés */
void recup_patient(struct patient pa[],int *i)
{
FILE *f;
f=fopen("fichier.txt","r");
if(f==NULL)
{
printf("impossible d'ouvrir le fichier");
}
else{
while(fscanf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",&(pa[*i].iden),pa[*i].nom,pa[*i].prenom,&(pa[*i].age),pa[*i].nationnalite,pa[*i].profession,pa[*i].pays,pa[*i].sexe,&(pa[*i].tel),pa[*i].photo,pa[*i].tsang,pa[*i].adresse)!=EOF)
{
(*i)++;
}
fclose(f);
}
}
void modifier_patient()
{
struct patient pa[100];
int k=0,j=0,x=0,c=0,z=0;
int boo =0;
recup_patient(pa,&k);
do
{
boo=0;
printf("entrer l'id du patient pour modifier ses parametre ");
scanf("%d",&z);
while ((pa[j].iden!=z)&&(j<k))
{
j++;
}
if (j<k)
{
do
{
do
{
menu();
printf("saisir votre choix ");
scanf("%d",&x);
}
while(x<1||x>12);
changement(pa,j,x);
do
{
printf("taper 1 pour modifier une autre information\ntaper 0 pour quitter ");
scanf("%d",&c);
}
while (c!=0 && c!=1);
}
while (c!=0);
}
else
{
boo=1;
printf("ID invalide\n");
}
}
while((boo==1)||(z==0));
sauvegarde_patient(pa,k);
}
void changement(struct patient pa[], int k, int x)
{
if (x==1)
{
printf("entrez le nouveau nom");
scanf("%s",pa[k].nom);
fflush(stdin);
}
else if (x==2)
{
printf("entrez le nouveau prenom");
scanf("%s",pa[k].prenom);
fflush(stdin);
}
else if (x==3)
{
printf("saisir le nouvel age\n");
scanf("%d",&pa[k].age);
}
else if (x==4)
{
printf("saisir la nouvelle nationalite\n");
scanf("%s",pa[k].nationnalite);
fflush(stdin);
}
else if (x==5)
{
printf("entrez le nouveau pays\n");
scanf("%s",pa[k].pays);
fflush(stdin);
}
else if (x==6)
{
printf("entrez le nouveau sexe du patient\n");
scanf("%s",pa[k].sexe);
fflush(stdin);
}
else if (x==7)
{
printf("entrez le nouveau numero du patient\n");
scanf("%d",&pa[k].tel);
}
/*else if (x==8)
{
printf("entrez le nouveau chemin de la photo\n");
scanf("%s",pa[k].photo);
fflush(stdin);
}
else if (x==9)
{
printf("entrez le nouveau groupe sanguin\n");
scanf("%s",pa[k].Tsang);
fflush(stdin);
}
else if (x==10)
{
printf("entrez la nouvelle adresse\n");
scanf("%s",pa[k].adresse);
fflush(stdin);
}
else if (x==11)
{
printf("entrez le nouveau resultat\n");
scanf("%s",pa[k].resultat_examen);
0fflush(stdin);
}
else if (x==12)
{
printf("entrez le nouveau numero\n");
scanf("%d",&pa[k].num_accompagnant);
fflush(stdin);
}*/
}
void menu()
{
printf("entrez 1 pour changer le nom du patient\n");
printf("entrez 2 pour changer le prenom du patient\n");
printf("entrez 3 pour changer l'age du patient\n");
printf("entrez 4 pour changer la nationalite du patient\n");
printf("entrez 5 pour changer le pays du patient\n");
printf("entrez 6 pour changer le sexe du patient\n");

}
void sauvegarde_patient(struct patient pa[], int k)
{
FILE *f;
int j=0;
f=fopen("fichier.txt","w");
for(j=0;j<k;j++)
{
fprintf(f,"%d %s %s %d %s %s %s %s %d %s %s %s \n ",pa[j].iden,pa[j].nom,pa[j].prenom,pa[j].age,pa[j].nationnalite,pa[j].profession,pa[j].pays,pa[j].sexe,pa[j].tel,pa[j].photo,pa[j].tsang,pa[j].adresse);
}
fclose(f);
}
